package com.ruicar.afs.cloud.basic.proceeds.mq.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruicar.afs.cloud.basic.common.entity.BasicProductParam;
import com.ruicar.afs.cloud.common.modules.contract.enums.BusinessTypeEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.OperateWayEnum;
import com.ruicar.afs.cloud.common.modules.contract.enums.YesOrNoEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author: Lee
 * @date 2020-05-29 09:31:34 
 * @description 合同产品信息参数表（金融参数，需要算法子系统确定后再补充）
 */
@Data
public class ContractProductParamDTO extends ContractMqBaseDataDTO<BasicProductParam>{

	/** 合同编号 */
	@ApiModelProperty("合同编号")
	private String contractNo;
	/** 产品编号 */
	@ApiModelProperty("产品编号")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long productId;
	/** 产品名称 */
	@ApiModelProperty("产品名称")
	private String productName;
	/** 逾期利率 */
	@ApiModelProperty("逾期利率")
	private Double overdueRate;
	/** 是否允许展期 */
	@ApiModelProperty("是否允许展期")
	private YesOrNoEnum isExtension;
	/** 提前结清费用 */
	@ApiModelProperty("提前结清费用")
	private BigDecimal earlySettleCost;
	/** 是否允许还款日变更 */
	@ApiModelProperty("是否允许还款日变更")
	private YesOrNoEnum isRepaymentDate;
	/** 提前结清期数 */
	@ApiModelProperty("提前结清期数")
	private Integer settleTermNo;
	/** 还款日变更是否允许首期变更 */
	@ApiModelProperty("还款日变更是否允许首期变更")
	private YesOrNoEnum isFirstChange;
	/** 还款日变更提前天数 */
	@ApiModelProperty("还款日变更提前天数")
	private Integer changeRepaymentDay;
	/** 是否允许重构 */
	@ApiModelProperty("是否允许重构")
	private YesOrNoEnum isRebuild;
	/** 还款日变更n次后收取费用 */
	@ApiModelProperty("还款日变更n次后收取费用")
	private BigDecimal chargeFee;
	/** 还款日变更n次后费用金额 */
	@ApiModelProperty("还款日变更n次后费用金额")
	private BigDecimal costAmount;
	/** 允许合同取消天数 */
	@ApiModelProperty("允许合同取消天数")
	private Integer cancelDays;
	/** LPR利率合同逾期利息计算方式 */
	@ApiModelProperty("LPR利率合同逾期利息计算方式")
	private String changeInterestType;
	/** 提前结清申请日期控制 */
	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	@ApiModelProperty("提前结清申请日期控制")
	private Date controlDate;
	/** LPR利率合同还款日变更利率方式 */
	@ApiModelProperty("LPR利率合同还款日变更利率方式")
	private String changeRateType;
	/** 业务类型 新车、二手车 */
	@ApiModelProperty("业务类型 新车、二手车")
	private BusinessTypeEnum businessType;
	/** 运营方式 无、网约车 */
	@ApiModelProperty("运营方式 无、网约车")
	private OperateWayEnum operateWay;
	/** 车辆类型 乘用车、LCV、重卡、中卡 */
	@ApiModelProperty("车辆类型 乘用车、LCV、重卡、中卡")
	private String carType;
	/** 车辆属性 新车、挂牌新车 */
	@ApiModelProperty("车辆属性 新车、挂牌新车")
	private String carNature;
	/** 是否是LRP 枚举值 */
	@ApiModelProperty("是否是LPR")
	private YesOrNoEnum isLpr;
}
